package com.dfrz.ch06.tackTeacher;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * 程序功能：统计一行字符中的英文、空格、数字和其他字符的个数
 */
public class CountWord03 {

	/**
	 * 主函数
	 * @param args
	 * @throws IOException
	 */
	public static void main(String args[]) throws IOException {
		BufferedReader buf = new BufferedReader(
				new InputStreamReader(System.in));
		while (true) {
			System.out.print("Input a string:");
			String text = buf.readLine();
			fenlei(text);
			System.out.print("\t\n");
		}
	}

	/**
	 * 统计字符串中的英文、空格、数字和其他字符的个数
	 * @param text 源字符串
	 * @return 无返回类型,结果在函数中输出
	 */
	public static void fenlei(String text) {
		// 将字符串保存在数组中便于遍历操作
		char[] t = text.toCharArray();

		// 表示字母个数
		int word = 0;
		// 表示空格个数
		int blank = 0;
		// 表示数字个数
		int number = 0;
		// 表示其他字符个数
		int other = 0;

		// 遍历并逐个判断字符类型
		for (int i = 0; i < text.length(); i++) {
			if ((t[i] >= 'A' && t[i] <= 'Z') || (t[i] >= 'a' && t[i] <= 'z')) {
				word++;
			}
			else if (t[i] >= '0' && t[i] <= '9') {
				number++;
			}
			else if (t[i] == ' ') {  //  " ".equals()
				blank++;
			}
			else {
				other++;
			}
		}

		// 输出结果
		System.out.println("字母：" + word);
		System.out.println("数字：" + number);
		System.out.println("空格：" + blank);
		System.out.println("其他字符：" + other);
	}
}